package com.luoke.context;

import com.luoke.pojo.dto.BattleInfoDTO;
import org.java_websocket.WebSocket;

import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;

public class GlobalDataStore {
    // 定义一个全局静态的 ConcurrentHashMap
    // 保存在线用户的用户名和对应的 WebSocket 连接,方便向特定用户发送消息  线程安全的map集合
    public static final Map<String, WebSocket> onlineUser = new ConcurrentHashMap<>();

    //维护一个常量，判断用户是否进入等待区
    public static final Map<String, String> waitUser = new ConcurrentHashMap<>();

    // 存储玩家名与 battleId 的映射
    private static final Map<String, Long> nameToBattleIdMap = new ConcurrentHashMap<>();
    // 使用 ConcurrentHashMap 存储玩家名与 BattleInfoDTO 的映射
    private static final Map<String, BattleInfoDTO> playerBattleMap = new ConcurrentHashMap<>();


    // 根据玩家名获取 battleId
    public static Long getBattleIdByPlayerName(String playerName) {
        return nameToBattleIdMap.get(playerName);
    }

    // 添加玩家与 battleId 的映射
    public static void addPlayerToBattleId(String playerName, Long battleId) {
        nameToBattleIdMap.put(playerName, battleId);
    }

    // 移除玩家与 battleId 的映射
    public static void removePlayerFromBattle1Id(String playerName) {
        nameToBattleIdMap.remove(playerName);
    }


    // 添加玩家和战斗信息
    public static void addPlayerToBattle(String playerName, BattleInfoDTO battleInfo) {
        playerBattleMap.put(playerName, battleInfo);
    }

    // 根据玩家名获取战斗信息
    public static BattleInfoDTO getBattleInfoByPlayerName(String playerName) {
        return playerBattleMap.get(playerName);
    }

    // 移除玩家和战斗信息
    public static void removePlayerFromBattleInfo(String playerName) {
        playerBattleMap.remove(playerName);
    }


//    // 提供线程安全的访问方法
//    public static synchronized Long getBattleId() {
//        return battleId;
//    }

//    public static synchronized void setBattleId(Long newBattleId) {
//        battleId = newBattleId;
//    }


    // 私有化构造器，防止实例化
    private GlobalDataStore() {
    }
}
